﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Terrae.Clases;
using Terrae.GUI.Contrato;
using Terrae.Logica.Comandos;
using Terrae.Logica.FabricaLogica;
using Terrae.Clases.FabricaClase;

namespace Terrae.GUI.Presentador
{
    public class PresentadorAgregarInvernadero
    {
        #region Atributos

        /// <summary>
        /// Instancia del IContratoAgregarInvernadero.
        /// </summary>
        private IContratoAgregarInvernadero _contrato;
        private Entidad _invernadero = FabricaEntidad.NuevoInvernadero();
        private Comando<bool> _comando;

        #endregion Atributos

        #region Constructor

        /// <summary>
        /// Contructor del Presentador que recibe la vista 
        /// del agregar invernadero.
        /// </summary>
        /// <param name="contrato"></param>
        public PresentadorAgregarInvernadero(IContratoAgregarInvernadero contrato)
        {
            _contrato = contrato;
        }

        #endregion Constructor

        #region Métodos

        /// <summary>
        /// Método que llama al comando para agregar un invernadero.
        /// </summary>
        public void AgregarInvernadero()
        {
            // llama la variable session que contiene el id del Usuario.
            (_invernadero as Invernadero).Nombre = 
                _contrato.Nombre.Text;
            (_invernadero as Invernadero).Descripcion = 
                _contrato.Descripcion.Text;
            (_invernadero as Invernadero).Persona.Id = 
                ((Persona)_contrato.Sesion["Usuario"]).Id;

            //Obtenemos el comando de agregar el invernadero desde la fabrica lógica.
            _comando = FabricaComando.CrearComandoAgregarInvernadero(_invernadero);

            if (_comando.Ejecutar() == true)
            {
                _contrato.Mensaje1.Text = "Se ha realizado exitosamente su transacción";
                _contrato.Mensaje1.Visible = true;
                _contrato.Nombre.Text = "";
                _contrato.Descripcion.Text = "";
            }
            else
            {
                _contrato.Mensaje.Text = "No se pudo realizar su transacción. Verifique";
                _contrato.Mensaje.Visible = true;
            }
        }

        #endregion Métodos
    }
}